/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pantallajuegoreducido;

/**
 *
 * @author Administrador
 */
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.TreeMap;
import java.util.Vector;
import javax.swing.JFrame;
import Objetos.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.lang.Integer;
import pantallajuegoreducido.*;

public class PantallaJuego  extends Canvas implements WindowListener{

    private Vector<Figura> figura =new Vector<Figura>();
    private static int usrID=4556; /*esto borrar jej ver como se lo manda el servidor*/
    private JFrame jf;
    private PantallaJuego pant;
    private TreeMap<Integer, Integer> tc;
    ManejadorAcciones manejadorAcciones;

    protected PantallaJuego(){

        jf=new JFrame("Pantalla de Juego");
        jf.addWindowListener(this);//habilita la escucha de la venta
        jf.setLayout(null);
        jf.setBounds(20,20,800,600);
        jf.setBackground(Color.gray);
        setBounds(200,40,400,500);
        setBackground(Color.LIGHT_GRAY);
        jf.getContentPane().add(this);
        manejadorAcciones = new ManejadorAcciones();

        addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                manejadorAcciones.recibeAccion(e);
            }
        });

        tc = new TreeMap<Integer, Integer>();

        jf.setVisible(true);



    }

    /*este metodo nos grafica el entonrno, nos pone los cuadraditos de los jugadores con sus niveles y todo eso*/
    public void generarEntornoJuego(Vector<InfoJugadores> jugadores, PantallaJuego pantalla, TreeMap <Integer,Integer> tc){
        Integer x0=10;
        Integer y0=10;
        Integer width = 30;
        Integer height = 60;
        InfoJugadores info;
        
        for(int i=0; i<=jugadores.size(); i++){
            info=jugadores.get(i);
            
            pantalla.getFigura().add(new Jugador(x0,y0,width,height,info.getColor(),pantalla,null, 10));
            
            x0=x0+50;
            y0=y0+80;
        }
    }

    public void generarEscenario(PantallaJuego pantalla){

            System.out.println("Cargando Escenario...");


            /**BORDES*/
            pantalla.getFigura().add(new ParedHorizontal(0, 0, 500, 3, Color.BLACK, pantalla, null));
            pantalla.getFigura().add(new ParedVertical(0, 3, 3, 495, Color.BLACK, pantalla, null));
            pantalla.getFigura().add(new ParedVertical(397, 3, 3, 495, Color.BLACK, pantalla, null));
            pantalla.getFigura().add(new ParedHorizontal(0, 497, 400, 10, Color.BLACK, pantalla, null));


            /**PAREDES DE ARIIBA */

            pantalla.getFigura().add(new ParedVertical(40,0,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(120,0,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(200,0,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(280,0,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(360,0,40,200,Color.BLACK,pantalla,null));

            /**BORDES HORIZONTALES DE ARRIBA*/

            pantalla.getFigura().add(new ParedHorizontal(40,200,40,1,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(120,200,40,1,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(200,200,40,1,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(280,200,40,1,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(360,200,40,1,Color.BLACK,pantalla,null));

            /**BORDES VERTICALES DE EL MEDIO*/

            pantalla.getFigura().add(new ParedVertical(200,240,1,40,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(240,240,1,40,Color.BLACK,pantalla,null));

            /**PAREDES DEL MEDIO*/

            pantalla.getFigura().add(new ParedHorizontal(0,240,200,40,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(240,240,200,40,Color.BLACK,pantalla,null));

            /**PAREDES DE ABAJO */

            pantalla.getFigura().add(new ParedVertical(40,320,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(120,320,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(200,320,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(280,320,40,200,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedVertical(360,320,40,200,Color.BLACK,pantalla,null));

            /**BORDES HORIZONTALES DE ARRIBA*/

            pantalla.getFigura().add(new ParedHorizontal(40,319,40,5,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(120,319,40,1,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(200,319,40,1,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(280,319,40,1,Color.BLACK,pantalla,null));
            pantalla.getFigura().add(new ParedHorizontal(360,319,40,1,Color.BLACK,pantalla,null));
            pantalla.repaint();

    }

    public void cargarJugadores(int cantJugadores, PantallaJuego pantalla, Vector<InfoJugadores> jugadores){

        System.out.println("Actualizando Jugadores...");
         Jugador jugador = new Jugador(340, 20, 20, 20, Color.red, pantalla, tc, usrID);
         //pantalla.addKeyListener(jugador);
         pantalla.getFigura().add(jugador);

         /**ENEMIES*/
         Jugador enemigo = new Jugador(340, 60, 20, 20, Color.GREEN, pantalla, tc, usrID); /*ver como le asigamos el USR ID*/
         pantalla.getFigura().add(enemigo);
         pantalla.repaint();
    }

    @Override
    public void paint (Graphics g){
        for (int i0=0;i0<getFigura().size();i0++){
            getFigura().get(i0).dibujate(g);
        }
    }

    public void cerrarPantalla(){
        jf.setVisible(false);
    }

    public void windowOpened(WindowEvent e) {}

    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }

    public void windowClosed(WindowEvent e) {
        System.exit(0);
    }

    public void windowIconified(WindowEvent e) {}

    public void windowDeiconified(WindowEvent e) {}

    public void windowActivated(WindowEvent e) {}

    public void windowDeactivated(WindowEvent e) {}

    public Vector<Figura> getFigura() {
        return figura;
    }
}




